﻿using HCMS.CommonDtos;
using HCMS.Entities.Base;
using HCMS.Repositories.Base;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace HCMS.IServices.Base
{
    /// <summary>
    /// 系统 字典 应用服务 接口
    /// </summary>
    public interface ISystemDictionaryAppService : ICommonAppService<BaseDbContext, SystemDictionary>
    {

        /// <summary>
        /// 管理 列表
        /// </summary>
        /// <param name="searchArgs">搜索 参数</param>
        /// <param name="pager">分页 参数</param>
        /// <returns></returns>
        Task<ListPagerDto<object>> ManageList(SearchArgsDto searchArgs, PagerArgsDto pager);

        /// <summary>
        /// 字典 树
        /// </summary>
        /// <returns></returns>
        Task<object> GetAllTree();

        /// <summary>
        /// 根据父级 Id 获取列表
        /// </summary>
        /// <param name="parentId">父级 Id</param>
        /// <returns></returns>
        Task<List<SystemDictionary>> ListByParentId(int parentId);

        /// <summary>
        /// 根据父级字典 Value 获取列表
        /// </summary>
        /// <remarks>
        /// 用法 例如：性别字典 value 定义为 sex，程序直接根据 sex 获取其子级的性别列表
        /// </remarks>
        /// <param name="parentValue">父级 自定义字典值</param>
        /// <returns></returns>
        Task<List<SystemDictionary>> ListByParentValue(string parentValue);

        /// <summary>
        /// 不允许存在重复的 自定义字典值
        /// </summary>
        /// <param name="id">当前字典 Id</param>
        /// <param name="dictionaryValue">自定义字典值</param>
        /// <returns></returns>
        Task<bool> HasRepeatValue(int id, string dictionaryValue);

    }
}
